/*
 * @Author: wwssaabb
 * @Date: 2021-07-08 09:29:23
 * @LastEditTime: 2021-07-14 16:15:49
 * @FilePath: \demo\blog_demo\app.js
 */

//引入koa框架
const koa=require('koa')
const static=require('koa-static')
const path=require('path')
const render=require('koa-art-template')
const cors=require('koa2-cors')
const bodyparser=require('koa-bodyparser')
const session=require('koa-session')
const dateFormat=require('dateformat')
const morgan=require('morgan')

//建立网页服务器
const app=new koa()

app.on('error',err=>{
  console.log('server error',err)
})

//允许跨域
app.use(cors())
//对post的参数进行处理，可以通过ctx.response.body拿到参数对象
app.use(bodyparser())

//连接数据库
require('./model/connect')
//require('./model/user')


//暴露public静态资源目录
app.use(static(path.join(__dirname,'public')))

//使用session
app.keys=['blog secret 1518'] //用于加密session的加密处理
const CONFIG={
  key:'koa:sess',   //cookie key (default is koa:sess)
  maxAge:24*60*60*1000,  //设置过期时间
  overwrite:true,  //是否可以overwrite
  httpOnly:true,  //cookie是否只有服务端可以访问
  signed:true,    //签名默认为true
  rolling:false,    //每次请求是强行设置cookie，这将重置cookie过期时间
  renew:false,    //(boolean) renew session when session is nearly expired
}
app.use(session(CONFIG,app))

//设置art-template
render(app,{
  root:path.join(__dirname,'views'),  //模板位置
  extname:'.art',   //模板默认后缀名  
  debug: process.env.NODE_ENV !== 'production'  //是否使用调试模式
})
//设置模板全局变量
const template=require('art-template')
template.defaults.imports.dateFormat=dateFormat

//登录拦截
app.use(require('./middleware/loginGuard'))

//引入整合路由的方法，并使用
require('./route/index')(app)

//test 测试代码
//require("./test");

app.listen(3000,err=>{
  if(!err){
    //console.log(process.env)
    console.log('服务器开启成功!')
    let runtime=process.env.NODE_ENV
    if(runtime){
      let NODE_ENV=runtime==='development'?'开发环境':'生产环境'
      console.log('当前环境为'+NODE_ENV)
      if(NODE_ENV=runtime==='development'){
        app.use(morgan('tiny'))
      }
    }
    console.log('请访问 ：http://localhost:3000 ')
  }else{
    console.log(err)
  }
})